AWK একটি বহুমুখী টুল যা ডেটা প্রসেসিং এবং টেক্সট ফাইল থেকে বিভিন্ন ধরনের রিপোর্ট তৈরিতে ব্যবহৃত হয়। AWK এর সহজ সিনট্যাক্স এবং শক্তিশালী ডেটা ফিল্টারিং ক্ষমতা ব্যবহার করে জটিল রিপোর্ট তৈরি করা যায়। রিপোর্ট জেনারেশনের জন্য AWK বিশেষভাবে কার্যকর, কারণ এটি ইনপুট ফাইল থেকে ডেটা প্রক্রিয়া করে প্রয়োজনীয় আউটপুট তৈরি করতে পারে।
AWK এর সাহায্যে ডেটা বিশ্লেষণ, সারসংক্ষেপ তৈরি এবং বড় ডেটাসেট থেকে গুরুত্বপূর্ণ তথ্য বের করা সহজ হয়। এটি বিভিন্ন ধরনের ফিল্টার এবং ফরম্যাটিং ব্যবহার করে ব্যবহারকারীদের প্রয়োজন অনুযায়ী রিপোর্ট তৈরি করতে সহায়তা করে।
ধরা যাক, আপনার কাছে একটি CSV ফাইল আছে যেখানে কর্মচারীদের নাম, বিভাগ এবং বেতন রয়েছে। আপনি প্রতিটি বিভাগের মোট বেতনের একটি রিপোর্ট তৈরি করতে চান।
employees.csv
):Name,Department,Salary
John,Sales,5000
Jane,HR,6000
Doe,Sales,5500
Anna,HR,6500
awk -F "," 'NR > 1 { salary[$2] += $3 } END { for (dept in salary) print dept ": $" salary[dept] }' employees.csv
বিস্তারিত ব্যাখ্যা:
-F ","
ফিল্ড বিভাজক হিসেবে কমা নির্ধারণ করে।NR > 1
প্রথম লাইন (শিরোনাম) বাদ দেয়।salary[$2] += $3
প্রতিটি বিভাগের মোট বেতন যোগ করে।END { for (dept in salary) print dept ": $" salary[dept] }
প্রতিটি বিভাগের মোট বেতন প্রিন্ট করে।আউটপুট:
Sales: $10500
HR: $12500
নির্দিষ্ট কলাম থেকে ডেটা বের করে ফরম্যাট করা রিপোর্ট তৈরি করা যায়।
awk '{ printf "%-10s %-15s %5s\n", $1, $2, $3 }' datafile.txt
এটি প্রতিটি লাইনের প্রথম, দ্বিতীয় এবং তৃতীয় কলামকে নির্দিষ্ট ফরম্যাটে প্রিন্ট করবে।
AWK ব্যবহার করে সহজেই গ্রুপভিত্তিক রিপোর্ট তৈরি করা যায়, যেখানে ডেটা নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করা হয়।
awk -F "," 'NR > 1 { salary[$2] += $3; count[$2]++ } END { for (dept in salary) print dept ": Average Salary = $" salary[dept]/count[dept] }' employees.csv
আউটপুট:
Sales: Average Salary = $5250
HR: Average Salary = $6250
AWK এর মাধ্যমে রিপোর্টকে সরাসরি ফাইলে লেখা যায়।
awk -F "," 'NR > 1 { salary[$2] += $3 } END { for (dept in salary) print dept ": $" salary[dept] > "report.txt" }' employees.csv
এই স্ক্রিপ্টটি প্রতিটি বিভাগের মোট বেতনের রিপোর্ট report.txt
ফাইলে লিখবে।
AWK এর printf
ফাংশন ব্যবহার করে আউটপুটকে আরও সুন্দরভাবে ফরম্যাট করা যায়।
awk -F "," 'NR > 1 { salary[$2] += $3 } END { printf "%-15s %10s\n", "Department", "Total Salary"; for (dept in salary) printf "%-15s $%10.2f\n", dept, salary[dept] }' employees.csv
আউটপুট:
Department Total Salary
Sales $ 10500.00
HR $ 12500.00
AWK এর মাধ্যমে রিপোর্ট জেনারেশন খুবই কার্যকর এবং সহজ। AWK এর শক্তিশালী ফিল্টারিং, গ্রুপিং, এবং ফরম্যাটিং ক্ষমতা ব্যবহার করে বড় ডেটাসেট থেকে প্রয়োজনীয় তথ্য বের করে সুন্দরভাবে উপস্থাপন করা যায়। এটি ডেটা বিশ্লেষণ, পরিসংখ্যান তৈরি, এবং রিপোর্টিংয়ের জন্য অত্যন্ত সহায়ক।
AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় রিপোর্ট ফরম্যাটিং এবং প্রিন্টিং ডেটা উপস্থাপনার একটি গুরুত্বপূর্ণ অংশ। এটি ডেটাকে স্পষ্ট, পাঠযোগ্য, এবং সংক্ষিপ্তভাবে উপস্থাপন করতে সহায়তা করে। AWK-তে রিপোর্ট ফরম্যাটিংয়ের জন্য printf
ফাংশন এবং অন্যান্য কৌশল ব্যবহার করা হয়, যা আউটপুটে নির্দিষ্ট বিন্যাসে ডেটা প্রিন্ট করতে সহায়ক।
printf
ফাংশন ব্যবহার করে ফরম্যাটিংprintf
ফাংশন ব্যবহার করে আপনি আউটপুটকে কাস্টম ফরম্যাটে প্রিন্ট করতে পারেন। এটি বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুট সাজানোর সুযোগ দেয়।
%s
: স্ট্রিং আউটপুটের জন্য।%d
: পূর্ণসংখ্যা আউটপুটের জন্য।%f
: ভগ্নাংশ সংখ্যা আউটপুটের জন্য।%.nf
: নির্দিষ্ট সংখ্যক দশমিক পর্যন্ত ভগ্নাংশ সংখ্যা প্রদর্শন।awk 'BEGIN {
name = "Alice"
age = 30
gpa = 3.75
printf "Name: %s, Age: %d, GPA: %.2f\n", name, age, gpa
}'
আউটপুট:
Name: Alice, Age: 30, GPA: 3.75
printf
ফাংশনের মাধ্যমে কলামের প্রস্থ নির্ধারণ করে আউটপুটের কলামগুলো সঠিকভাবে সাজানো যায়।
awk 'BEGIN {
printf "%-10s %-5s %-5s\n", "Name", "Age", "GPA"
printf "%-10s %-5d %-5.2f\n", "Alice", 30, 3.75
printf "%-10s %-5d %-5.2f\n", "Bob", 25, 3.50
}'
আউটপুট:
Name Age GPA
Alice 30 3.75
Bob 25 3.50
নোট:
%
-এর পরে-
চিহ্ন দিলে বাম দিকে সজ্জিত হয়, এবং কোনও চিহ্ন না দিলে ডান দিকে সজ্জিত হয়।
\n
) এবং ট্যাব (\t
) ব্যবহারের উদাহরণ:awk 'BEGIN {
print "Report\n---------"
print "Name\tAge\tGPA"
print "Alice\t30\t3.75"
print "Bob\t25\t3.50"
}'
আউটপুট:
Report
---------
Name Age GPA
Alice 30 3.75
Bob 25 3.50
সংখ্যাগুলি ডানদিকে সজ্জিত করতে নির্দিষ্ট প্রস্থ ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ:
awk 'BEGIN {
num1 = 123
num2 = 4567
printf "%10d\n", num1
printf "%10d\n", num2
}'
আউটপুট:
123
4567
রিপোর্টের শুরুতে শিরোনাম এবং শেষে উপসংহার যোগ করতে BEGIN
এবং END
ব্লক ব্যবহার করা যায়।
awk 'BEGIN {
print "Employee Report"
print "---------------"
}
{
printf "%-10s %-5s\n", $1, $2
}
END {
print "---------------"
print "End of Report"
}' employee.txt
আউটপুট:
Employee Report
---------------
John 35
Alice 28
Mike 40
---------------
End of Report
AWK আউটপুটকে একটি ফাইলে সংরক্ষণ করতে >
বা >>
অপারেটর ব্যবহার করা যায়।
awk '{ printf "%-10s %-5d\n", $1, $2 }' data.txt > report.txt
এই কমান্ডটি data.txt
ফাইল থেকে ফরম্যাটেড আউটপুট report.txt
ফাইলে সংরক্ষণ করবে।
AWK-তে রিপোর্ট ফরম্যাটিং এবং প্রিন্টিং টেকনিকগুলি আপনাকে পরিষ্কার, পাঠযোগ্য, এবং পেশাদারী আউটপুট তৈরি করতে সহায়তা করে। printf
ফাংশন এবং বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে আপনি আউটপুটকে আরও নিয়ন্ত্রিত এবং সাজানোভাবে উপস্থাপন করতে পারেন। এর ফলে বড় আকারের ডেটা সহজে বিশ্লেষণ এবং উপস্থাপন করা সম্ভব হয়।
AWK একটি অত্যন্ত কার্যকর টুল যা বড় ডেটাসেট থেকে ডেটা অ্যাগ্রিগেশন (সংগ্রহ) এবং সামারাইজেশন (সারসংক্ষেপ) করতে ব্যবহৃত হয়। বিভিন্ন ধরনের ডেটা বিশ্লেষণ, যেমন গড় নির্ণয়, সর্বোচ্চ এবং সর্বনিম্ন মান বের করা, মোট যোগফল ইত্যাদি, AWK ব্যবহার করে করা যায়। নিচে ডেটা অ্যাগ্রিগেশন এবং সামারাইজেশনের কয়েকটি উদাহরণ এবং কৌশল দেখানো হলো।
AWK এ ডেটা অ্যাগ্রিগেশন করার জন্য সাধারণত লুপ এবং অ্যারে ব্যবহার করা হয়। BEGIN
, END
, এবং মূল স্ক্রিপ্ট ব্লকে বিভিন্ন কার্যক্রম সম্পন্ন করা হয়।
awk '{ sum += $2 } END { print "Total:", sum }' data.txt
বর্ণনা:
sum
ভেরিয়েবলে যোগ করা হয়েছে।END
ব্লকে মোট যোগফল প্রিন্ট করা হয়েছে।awk '{ sum += $2; count++ } END { if (count > 0) print "Average:", sum / count }' data.txt
বর্ণনা:
sum
এ যোগ করা হয়েছে এবং count
দিয়ে মোট লাইন সংখ্যা গণনা করা হয়েছে।END
ব্লকে গড় বের করার জন্য sum / count
ব্যবহার করা হয়েছে।awk 'NR == 1 { max = min = $2 }
{
if ($2 > max) max = $2
if ($2 < min) min = $2
}
END {
print "Max value:", max
print "Min value:", min
}' data.txt
বর্ণনা:
max
এবং min
কে প্রথম মান হিসাবে সেট করা হয়েছে।max
এবং min
আপডেট করা হয়েছে।END
ব্লকে সর্বোচ্চ এবং সর্বনিম্ন মান প্রিন্ট করা হয়েছে।AWK এ অ্যারে ব্যবহার করে গ্রুপ ভিত্তিক ডেটা অ্যাগ্রিগেশন করা যায়।
awk '{ sales[$1] += $3 } END { for (seller in sales) print seller, "Total sales:", sales[seller] }' sales_data.txt
বর্ণনা:
END
ব্লকে প্রতিটি বিক্রেতার নাম এবং তার মোট বিক্রয় প্রিন্ট করা হয়েছে।AWK এ শর্ত যোগ করে ডেটা সামারাইজেশন আরও কার্যকরী করা যায়।
awk '$2 > 50 { sum += $3 } END { print "Total sales for items over 50 units:", sum }' sales_data.txt
বর্ণনা:
sum
এ যোগ করা হয়েছে।END
ব্লকে মোট যোগফল প্রিন্ট করা হয়েছে।AWK এ কাস্টম ফাংশন ব্যবহার করে সামারাইজেশনকে আরও সহজ এবং পুনঃব্যবহারযোগ্য করা যায়।
awk '
function calculate_average(total, count) {
return (count > 0) ? total / count : 0
}
{
sum += $2
count++
}
END {
avg = calculate_average(sum, count)
print "Total:", sum
print "Average:", avg
}
' data.txt
বর্ণনা:
calculate_average
নামে একটি কাস্টম ফাংশন তৈরি করা হয়েছে যা গড় বের করে।END
ব্লকে sum
এবং avg
প্রিন্ট করা হয়েছে।AWK ব্যবহার করে ডেটা অ্যাগ্রিগেশন এবং সামারাইজেশন সহজে এবং কার্যকরভাবে করা যায়। লুপ, অ্যারে এবং কাস্টম ফাংশন ব্যবহার করে AWK জটিল ডেটা প্রক্রিয়াকরণ এবং বিশ্লেষণের কাজ দ্রুত করতে সক্ষম। ডেটা বিশ্লেষণ এবং সামারাইজেশনের ক্ষেত্রে AWK একটি গুরুত্বপূর্ণ টুল যা প্রোগ্রামারদের ডেটা বিশ্লেষণকে সহজ এবং দ্রুত করতে সহায়তা করে।
AWK একটি শক্তিশালী টুল যা ডেটা ফাইল থেকে কাস্টম রিপোর্ট তৈরি করতে ব্যবহৃত হয়। এর সহজ সিনট্যাক্স এবং শক্তিশালী ডেটা প্রসেসিং ক্ষমতার জন্য AWK জনপ্রিয়। কাস্টম রিপোর্ট তৈরি করার জন্য, আপনি ডেটা ফিল্টারিং, ফরম্যাটিং, এবং বিশেষভাবে আউটপুটের কাঠামো তৈরি করতে পারেন।
প্রথমে, ডেটা ফাইল প্রস্তুত করতে হবে। ধরুন, আমাদের কাছে একটি sales.txt
ফাইল রয়েছে, যার মধ্যে কিছু বিক্রির তথ্য রয়েছে:
Product,Category,Price,Quantity
Apple,Fruit,0.50,10
Banana,Fruit,0.30,5
Carrot,Vegetable,0.20,20
Tomato,Vegetable,0.25,15
AWK ব্যবহার করে এই ডেটার উপর ভিত্তি করে একটি কাস্টম রিপোর্ট তৈরি করা যেতে পারে। নিচে কিছু উদাহরণ দেওয়া হলো।
awk -F, 'NR > 1 { total += $3 * $4; print "Product: " $1 ", Total Sales: $" $3 * $4 } END { print "Overall Total Sales: $" total }' sales.txt
ব্যাখ্যা:
-F,
: কমা (,
) কে ফিল্ড সেপারেটর হিসেবে সেট করা হয়েছে।NR > 1
: প্রথম লাইনের হেডার বাদ দেওয়া হয়েছে।total += $3 * $4
: প্রতিটি পণ্যের মোট বিক্রি হিসাব করা হয়েছে।print
: পণ্য এবং তার মোট বিক্রির তথ্য প্রিন্ট করা হয়েছে।END
: প্রোগ্রামের শেষে মোট বিক্রির তথ্য প্রিন্ট করা হয়েছে।awk -F, 'NR > 1 { category[$2] += $3 * $4 }
END {
print "Category-wise Total Sales:"
for (cat in category) {
print "Category: " cat ", Total Sales: $" category[cat]
}
}' sales.txt
ব্যাখ্যা:
category[$2] += $3 * $4
: ক্যাটাগরি ভিত্তিক মোট বিক্রি হিসাব করা হয়েছে।for (cat in category)
: প্রতিটি ক্যাটাগরির জন্য মোট বিক্রি প্রিন্ট করা হয়েছে।awk -F, 'NR > 1 { printf "%-10s %-10s %-6s %-8s %-10s\n", $1, $2, $3, $4, $3*$4 }' sales.txt
ব্যাখ্যা:
printf
: আউটপুটকে একটি নির্দিষ্ট ফরম্যাটে প্রিন্ট করতে ব্যবহৃত হয়।%-10s
: 10 চরিত্রের জন্য বাম থেকে অ্যালাইন করা হবে। এর মাধ্যমে সুন্দরভাবে রিপোর্ট তৈরি হয়।কাস্টম রিপোর্ট তৈরি করার পর, আপনি ফলাফলকে একটি ফাইলে সংরক্ষণ করতে পারেন:
awk -F, 'NR > 1 { total += $3 * $4; print "Product: " $1 ", Total Sales: $" $3 * $4 } END { print "Overall Total Sales: $" total }' sales.txt > report.txt
এটি report.txt
ফাইলে আউটপুট সংরক্ষণ করবে।
আপনি AWK এর মধ্যে শর্ত, লুপ, এবং ফাংশন ব্যবহার করে জটিল রিপোর্ট তৈরি করতে পারেন।
awk -F, '
function totalSales(price, quantity) {
return price * quantity
}
NR > 1 {
sales[$2] += totalSales($3, $4)
}
END {
print "Sales Summary:"
for (cat in sales) {
print "Category:", cat, "Total Sales: $", sales[cat]
}
}' sales.txt
ব্যাখ্যা:
function totalSales
: একটি ফাংশন তৈরি করে যা মূল্য এবং পরিমাণের উপর ভিত্তি করে মোট বিক্রির হিসাব করে।AWK ব্যবহার করে কাস্টম রিপোর্ট তৈরি করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। ডেটা ইনপুট, ফিল্টারিং, এবং আউটপুট ফরম্যাটিং এর মাধ্যমে AWK ব্যবহারকারীরা সহজে তাদের প্রয়োজনীয় রিপোর্ট তৈরি করতে পারেন। AWK এর এই ক্ষমতা ডেটা বিশ্লেষণের সময় খুবই কার্যকর।
AWK প্রোগ্রামিং ভাষা একটি শক্তিশালী টুল যা সহজে টেক্সট ফাইল থেকে ডেটা বিশ্লেষণ ও রিপোর্ট তৈরি করতে ব্যবহৃত হয়। নিচে বিভিন্ন ধরনের রিপোর্ট জেনারেশন সম্পর্কিত উদাহরণ দেওয়া হলো।
একটি টেক্সট ফাইল থেকে সারসংক্ষেপ রিপোর্ট তৈরি করা, যেখানে প্রতিটি বিভাগে সংখ্যা গণনা করা হয়।
ধরা যাক, আমাদের কাছে sales.txt
ফাইল আছে, যা বিক্রির তথ্য ধারণ করে:
ProductA 100
ProductB 150
ProductA 200
ProductC 300
ProductB 100
ProductC 150
এখন আমরা প্রতিটি পণ্যের মোট বিক্রয় গণনা করে একটি রিপোর্ট তৈরি করতে পারি:
awk '{
sales[$1] += $2 # পণ্যের নামের উপর ভিত্তি করে বিক্রয় যোগ করা
}
END {
print "Product Sales Report"
print "======================"
for (product in sales) {
printf "%-10s : %d\n", product, sales[product]
}
}' sales.txt
আউটপুট:
Product Sales Report
======================
ProductA : 300
ProductB : 250
ProductC : 450
কিছু নির্দিষ্ট শর্তের ভিত্তিতে রিপোর্ট তৈরি করা।
একটি রিপোর্ট তৈরি করা যা শুধুমাত্র 200 এর বেশি বিক্রয় বিশিষ্ট পণ্য প্রদর্শন করবে:
awk '{
if ($2 > 200) {
printf "Product: %-10s Sales: %d\n", $1, $2
}
}' sales.txt
আউটপুট:
Product: ProductA Sales: 200
Product: ProductC Sales: 300
কোনও ক্ষেত্রের গড় মান গণনা করে রিপোর্ট তৈরি করা।
awk '{
total += $2 # মোট বিক্রয় যোগ করা
count++ # সংখ্যা গণনা করা
}
END {
avg = total / count # গড় গণনা করা
printf "Average Sales: %.2f\n", avg
}' sales.txt
আউটপুট:
Average Sales: 208.33
অ্যালাইনমেন্ট এবং ফরম্যাটিং ব্যবহার করে একটি সুন্দর টেবিল রিপোর্ট তৈরি করা।
awk 'BEGIN {
print "Product | Sales"
print "-------------|-------"
}
{
printf "%-12s | %d\n", $1, $2
}' sales.txt
আউটপুট:
Product | Sales
-------------|-------
ProductA | 300
ProductB | 250
ProductC | 450
মাল্টিপল ফাইল থেকে ডেটা একত্রিত করে রিপোর্ট তৈরি করা।
ধরি, আমাদের কাছে january_sales.txt
এবং february_sales.txt
রয়েছে:
january_sales.txt:
ProductA 100
ProductB 150
february_sales.txt:
ProductA 200
ProductB 250
এখন আমরা দুই মাসের বিক্রয় যোগ করে রিপোর্ট তৈরি করতে পারি:
awk '{
sales[$1] += $2 # একত্রিত করা
}
END {
print "Monthly Sales Report"
print "======================"
for (product in sales) {
printf "%-10s : %d\n", product, sales[product]
}
}' january_sales.txt february_sales.txt
আউটপুট:
Monthly Sales Report
======================
ProductA : 300
ProductB : 400
AWK একটি অত্যন্ত কার্যকরী টুল যা সহজেই রিপোর্ট জেনারেশনের কাজ সম্পন্ন করতে পারে। এটি বিভিন্ন ধরনের তথ্য যেমন সংখ্যা, গড়, শর্ত, এবং টেবিল ফরম্যাটে রিপোর্ট তৈরি করার ক্ষমতা প্রদান করে। AWK এর এই বৈশিষ্ট্যগুলি ব্যবহার করে বিশাল ডেটাসেটের মধ্যে তথ্য বিশ্লেষণ এবং উপস্থাপন সহজ হয়ে যায়।
common.read_more